/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ivanbiz.perpustakaan;

import com.ivanbiz.buku.Buku;
import com.ivanbiz.buku.BukuDAO;
import java.util.List;
import java.util.Date;

/**
 *
 * @author User
 */
public class PeminjamanBukuServiceImpl implements PeminjamanBukuService {

    private PeminjamanBukuDAO peminjamanBukuDAO;
    private KartuPerpusDAO kartuPerpusDAO;
    private BukuDAO bukuDAO;

    public void setPeminjamanBukuDAO(PeminjamanBukuDAO peminjamanBukuDAO) {
        this.peminjamanBukuDAO = peminjamanBukuDAO;
    }

    public void setKartuPerpusDAO(KartuPerpusDAO kartuPerpusDAO) {
        this.kartuPerpusDAO = kartuPerpusDAO;
    }

    public void setBukuDAO(BukuDAO bukuDAO) {
        this.bukuDAO = bukuDAO;
    }

    public void savePeminjamanBuku(List listBuku, String kartuPerpusKodeAccount) throws Exception {
        KartuPerpus kartuPerpus = (KartuPerpus) this.kartuPerpusDAO.getDataByEqual(KartuPerpus.class, "kodeAccount", kartuPerpusKodeAccount);
        for (int x = 0; x < listBuku.size(); x++) {
            PeminjamanBuku peminjamanBuku = (PeminjamanBuku)listBuku.get(x);
            peminjamanBuku.setKartuPerpus(kartuPerpus);
            Buku buku = (Buku) this.bukuDAO.getDataByEqual(Buku.class, "kodeBuku",peminjamanBuku.getBuku().getKodeBuku());
            buku.setFlag("1");
            this.bukuDAO.update(buku);
            peminjamanBuku.setBuku(buku);
            peminjamanBuku.setDeleteFlag("N");
            this.peminjamanBukuDAO.save(peminjamanBuku);
        }
    }

    public void deletePeminjamanBuku(PeminjamanBuku peminjamanBuku) throws Exception {
        this.peminjamanBukuDAO.delete(peminjamanBuku);
    }

    public void updatePeminjamanBuku(PeminjamanBuku peminjamanBuku) throws Exception {
        this.peminjamanBukuDAO.update(peminjamanBuku);
    }

    public List loadAll() throws Exception {
        return this.peminjamanBukuDAO.getAll(PeminjamanBuku.class);
    }

    public PeminjamanBuku loadById(long id) throws Exception {
        return (PeminjamanBuku) this.peminjamanBukuDAO.load(PeminjamanBuku.class, id);
    }

    public void pengembalianBuku(long id) throws Exception {
        PeminjamanBuku peminjamanBuku = (PeminjamanBuku) this.peminjamanBukuDAO.load(PeminjamanBuku.class, id);
        peminjamanBuku.getBuku().setFlag("0");
        peminjamanBuku.setDeleteFlag("Y");
        this.bukuDAO.update(peminjamanBuku.getBuku());
        this.peminjamanBukuDAO.update(peminjamanBuku);
    }

    public List loadByKodeAccount(String kode) throws Exception {
        return this.peminjamanBukuDAO.loadByKartuPerpusAccountKode(kode);
    }

    public List cekBukuKeluar() throws Exception {
        return this.peminjamanBukuDAO.cekBukuKeluar();
    }

    public List cariBukuKeluar(String nama, String flag) throws Exception {
        return this.peminjamanBukuDAO.cariBukuKeluar(nama, flag);
    }

    public List cariKeterlambatan(Date date) throws Exception {
        return this.peminjamanBukuDAO.cariKeterlambatan(date);
    }

   
}
